Actor TrueDrWily : TerminalArmorClass
{
Player.ScoreIcon "TDRWMUGS"
player.startitem "BaseFlagPack", 1
PainSound "weapon/mm1pain"
player.displayname "TrueDrWily"
player.soundclass "TrueDrWilyc"
player.morphweapon "WilyMachineBoss"
player.viewheight 105
projectilepassheight 150
player.forwardmove 0.8,0.8
player.sidemove 0.78,0.78
player.jumpz 14
renderstyle translucent
alpha 0.0
States
{
Animation1:
Spawn:
PLAY A 0
TDRW AAAAAABBBBBBCCCCCCDDDDDDEEEEEEFFFFFF 1
Goto Spawn+1
See:
TDRW GGGGGGHHHHHHIIIIII 1
Goto Spawn+1
Missile:
TDRW AAAAA 1
Missile2:
TDRW AAAAA 1
Goto Spawn+1
Animation2:
WilyMachineColorB:
TDRW KKK 1
Goto Spawn+1
Animation3:
WilyMachineColorC:
TDRW LLL 1
Goto Spawn+1
Animation4:
WilyMachineInvisible:
TNT1 AAA 1
Goto Spawn+1
ClassPain:
TDRW JJJJJJJJJJ 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1
ClassDeath:
TNT1 A 0 A_SpawnItemEx("DeadWilyMachine")
TNT1 A 20 ACS_ExecuteAlways(999,0,0)
NOFX A 1 A_CheckPlayerDone
wait
}
}

const int X_OFS = 72;
const int Y_OFS = 48;
const int Z_OFS = 40;

Actor WilyMachineBoss : VCBaseWeapon
{
weapon.ammotype "Base112Ammo"
weapon.ammotype2 "BaseAltfireAmmo"
Obituary "$OB_TRUEDRWILY1"
States
{
Ready:
TNT1 A 0
TNT1 A 1
TNT1 A 0 SetPlayerProperty(0,1,4)
TNT1 A 0 A_TakeInventory("BaseCustomFlag1")
TNT1 A 0 ACS_ExecuteAlways(991,0,10885)
TNT1 A 0 A_SpawnItemEx("WilyMachineSpawner")
TNT1 A 0 A_SpawnItemEx("WilyMachineLeftHand")
TNT1 A 0 A_SpawnItemEx("WilyMachineRightHand")
TNT1 A 0 A_PlaySoundEx("misc/catcherdrop","Weapon")
TNT1 A 0 A_GiveInventory("InvProtection",1)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",1)
TNT1 A 0 A_ChangeFlag("NOTELEFRAG",True)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAA 1 ACS_NamedExecuteWithResult("VC_SetState",4)
TNT1 AAAAA 1 ACS_NamedExecuteWithResult("VC_SetState",1)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_GiveInventory("ShadowVisible")
TNT1 A 0 A_GiveInventory("DWSummonHandsFlag",1)
TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_GiveInventory("ShadowVisible")
DRWH A 1 Offset(0,87)
DRWH A 1 Offset(0,77)
DRWH A 1 Offset(0,68)
DRWH A 1 Offset(0,60)
DRWH A 1 Offset(0,53)
DRWH A 1 Offset(0,47)
DRWH A 1 Offset(0,42)
DRWH A 1 Offset(0,38)
DRWH A 1 Offset(0,35)
DRWH A 1 Offset(0,33)
TNT1 A 0 SetPlayerProperty(0,0,3)
TNT1 A 0 SetPlayerProperty(0,0,4)
TNT1 A 0 SetPlayerProperty(0,0,0)
DRWH A 0 A_WeaponReady(WRF_NOFIRE)
TNT1 A 0 A_GiveInventory("GravityRestore")
DRWH A 0 A_SpawnItemEx("WilyMachineAmmoWatcher")
DRWH AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_GiveInventory("TDWSpawnHandler",1)
DRWH AAAAA 1 A_GiveInventory("TDWSpawnHandler2",1)
Ready2:
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",112,"Ready2.CanTF")
DRWH A 1 A_WeaponReady
TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
loop
Ready2.CanTF:
DRWH A 1 A_WeaponReady
TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
loop

Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
DRWH A 1 A_Lower
Loop
Select:
TNT1 A 0 ACS_ExecuteAlways(991,0,10885)
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
DRWH A 1 A_Raise
Goto Select+3

Fire:
TOAD A 0 A_GiveInventory("ToadChargeDamageGive")
TNT1 A 0 A_GiveInventory("DWRightChargeFlag",1)
TNT1 A 0 A_JumpIfInventory("Base112Ammo",56,"Fire2")
DRWH A 1 A_GiveInventory("Base112Ammo",1)
TNT1 A 0 A_Refire("FireB")
Goto Fire.Continue
FireB:
TNT1 A 0 A_JumpIfInventory("Base112Ammo",56,"Fire2")
DRWH A 1 A_GiveInventory("Base112Ammo",2)
TNT1 A 0 A_Refire("Fire")
Goto Fire.Continue

Fire.Continue:
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
TNT1 A 0 A_TakeInventory("Base112Ammo",112)
TNT1 A 0 A_TakeInventory("DWRightChargeFlag",1)
TNT1 A 0 A_GiveInventory("DWRightFistFlag",1)
TNT1 A 0 A_FireCustomMissile("WilyMachineRightFist",4,0,Y_OFS,Z_OFS-16,0,2)
TNT1 A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon")
Fire.Waiting:
DRWH A 1 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",140,"Fire.FistFinish")
TNT1 A 0 A_JumpIfInventory("DWRightFistFlag",1,"Fire.Waiting")
Goto Fire.FistFinish
Fire.FistFinish:
TNT1 A 0 A_TakeInventory("CutterFlag",999)
TNT1 A 0 A_TakeInventory("DWRightFistFlag",999)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
Goto Ready2

Fire2:
TNT1 A 0 A_JumpIfInventory("Base112Ammo",112,"Fire3")
DRWH A 1 A_GiveInventory("Base112Ammo",1)
TNT1 A 0 A_Refire("Fire2B")
Goto Fire2.Continue
Fire2B:
TNT1 A 0 A_JumpIfInventory("Base112Ammo",112,"Fire3")
DRWH A 1 A_GiveInventory("Base112Ammo",2)
TNT1 A 0 A_Refire("Fire2")
Goto Fire2.Continue

Fire2.Continue:
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
TNT1 A 0 A_TakeInventory("Base112Ammo",112)
TNT1 A 0 A_TakeInventory("DWRightChargeFlag",1)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
TNT1 A 0 A_PlaySoundEx("weapon/wilyshot3","Weapon")
TNT1 A 0 A_FireCustomMissile("WilyMachineVIShot",4,0,Y_OFS,Z_OFS,0,2)
DRWH A 10
TNT1 A 0 A_PlaySoundEx("weapon/wilyshot3","Weapon")
TNT1 A 0 A_FireCustomMissile("WilyMachineVIShot",4,0,Y_OFS,Z_OFS,0,2)
DRWH A 10
TNT1 A 0 A_PlaySoundEx("weapon/wilyshot3","Weapon")
TNT1 A 0 A_FireCustomMissile("WilyMachineVIShot",4,0,Y_OFS,Z_OFS,0,2)
DRWH A 10
Goto Ready2

Fire3:
TNT1 A 0 A_JumpIf(CallACS("VC_CheckBtn",4)==7,"LaserBeam")
DRWH A 1 A_GiveInventory("RightClickFlag",1)
TNT1 A 0 A_Refire("Fire3")
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
TNT1 A 0 A_TakeInventory("Base112Ammo",112)
TNT1 A 0 A_TakeInventory("RightClickFlag",1)
TNT1 A 0 A_TakeInventory("DWRightChargeFlag",1)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
TNT1 A 0 A_PlaySound("weapon/wily10electricity",1,0.5)
DRWH A 20 A_SpawnItemEx("WilyMachineLightningOrbWarper")
TNT1 A 0 A_PlaySound("weapon/wily10electricityfire",1,0.7)
TNT1 A 0 A_GiveInventory("WilyMachineLightningActivate",1)
TNT1 A 0 A_SpawnItemEx("WilyMachineLightningOrbStart",X_OFS+40,Y_OFS,Z_OFS+32,25,0,-25)
Goto Ready2

LaserBeam:
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
TNT1 A 0 SetPlayerProperty(0,1,3)
TNT1 A 0 SetPlayerProperty(0,1,4)
TNT1 A 0 A_GiveInventory("DWLaserFlag",1)
TNT1 A 0 A_TakeInventory("RightClickFlag",1)
TNT1 A 0 A_TakeInventory("DWRightChargeFlag",1)
TNT1 A 0 A_PlaySoundEx("weapon/truewilylaser","Weapon")
TNT1 A 0 A_SpawnItemEx("WilyLaserRing",80,0,64)

LaserBeamHold:
TNT1 A 0 A_JumpIfInventory("Base112Ammo",1,1)
Goto LaserBeamEnd
DRWH A 1 A_Stop TNT1 A 0 A_Quake(1,5,0,300) TNT1 A 0 A_TakeInventory("Base112Ammo",3)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1) TNT1 A 0 A_SpawnItemEx("WilyMachineLaserSpawner5",80,0,64)
TNT1 A 0 A_JumpIfInventory("Base112Ammo",1,1)
Goto LaserBeamEnd
DRWH A 1 A_Stop TNT1 A 0 A_Quake(1,5,0,300) TNT1 A 0 A_TakeInventory("Base112Ammo",3)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1) TNT1 A 0 A_SpawnItemEx("WilyMachineLaserSpawner6",80,0,64)
loop
LaserBeamEnd:
TNT1 A 0 A_TakeInventory("DWLaserFlag",1)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
DRWH A 1 A_Stop TNT1 A 0 A_Quake(1,5,0,300) TNT1 A 0 A_TakeInventory("Base112Ammo",3)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1) TNT1 A 0 A_SpawnItemEx("WilyMachineLaserSpawner4",80,0,64)
DRWH A 1 A_Stop TNT1 A 0 A_Quake(1,5,0,300) TNT1 A 0 A_TakeInventory("Base112Ammo",3)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1) TNT1 A 0 A_SpawnItemEx("WilyMachineLaserSpawner3",80,0,64)
DRWH A 1 A_Stop TNT1 A 0 A_Quake(1,5,0,300) TNT1 A 0 A_TakeInventory("Base112Ammo",3)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1) TNT1 A 0 A_SpawnItemEx("WilyMachineLaserSpawner2",80,0,64)
DRWH A 1 A_Stop TNT1 A 0 A_Quake(1,5,0,300) TNT1 A 0 A_TakeInventory("Base112Ammo",3)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1) TNT1 A 0 A_SpawnItemEx("WilyMachineLaserSpawner1",80,0,64)
TNT1 A 0 SetPlayerProperty(0,0,3)
TNT1 A 0 SetPlayerProperty(0,0,4)
DRWH A 10
Goto Ready2

Altfire:
TOAD A 0 A_GiveInventory("ToadChargeDamageGive")
TNT1 A 0 A_GiveInventory("DWLeftChargeFlag",1)
TNT1 A 0 A_JumpIfInventory("Base112Ammo",56,"Altfire2")
DRWH A 1 A_GiveInventory("Base112Ammo",1)
TNT1 A 0 A_Refire("Altfire")
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
TNT1 A 0 A_TakeInventory("DWLeftChargeFlag",1)
TNT1 A 0 A_GiveInventory("DWLeftFistFlag",1)
TNT1 A 0 A_TakeInventory("Base112Ammo",112)
TNT1 A 0 A_FireCustomMissile("WilyMachineLeftFist",-4,0,-Y_OFS,Z_OFS-16,0,2)
TNT1 A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon")
Altfire.Waiting:
DRWH A 1 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",140,"Fire.FlickFinish")
TNT1 A 0 A_JumpIfInventory("DWLeftFistFlag",1,"Altfire.Waiting")
Goto Fire.FlickFinish
Fire.FlickFinish:
TNT1 A 0 A_TakeInventory("CutterFlag",999)
TNT1 A 0 A_TakeInventory("DWLeftFistFlag",999)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
Goto Ready2

Altfire2:
TNT1 A 0 A_JumpIfInventory("Base112Ammo",112,"Altfire3")
DRWH A 1 A_GiveInventory("Base112Ammo",1)
TNT1 A 0 A_Refire("Altfire2")
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
TNT1 A 0 A_TakeInventory("DWLeftChargeFlag",1)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
TNT1 A 0 A_TakeInventory("Base112Ammo",112)
TNT1 A 0 A_PlaySound("weapon/wily10orbssummon",1,0.4)
TNT1 A 0 A_FireCustomMissile("WilyMachineXShot1",-6+30,0,-Y_OFS,Z_OFS,0,2)
TNT1 A 0 A_FireCustomMissile("WilyMachineXShot2",-6+15,0,-Y_OFS,Z_OFS,0,2)
TNT1 A 0 A_FireCustomMissile("WilyMachineXShot3",-6+0,0,-Y_OFS,Z_OFS,0,2)
TNT1 A 0 A_FireCustomMissile("WilyMachineXShot4",-6-15,0,-Y_OFS,Z_OFS,0,2)
TNT1 A 0 A_FireCustomMissile("WilyMachineXShot5",-6-30,0,-Y_OFS,Z_OFS,0,2)
DRWH A 20
Goto Ready2

Altfire3:
DRWH A 1
TNT1 A 0 A_Refire("Altfire3")
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
TNT1 A 0 A_TakeInventory("DWLeftChargeFlag",1)
TNT1 A 0 A_TakeInventory("Base112Ammo",112)
TNT1 A 0 A_GiveInventory("DWLeftRockOnFlag",1)
TNT1 A 0 A_FireCustomMissile("RockOnTargeter",0,0,0,Z_OFS)
TNT1 A 0 A_PlaySoundEx("weapon/Dark3Shot","Weapon")
DRWH A 20
TNT1 A 0 A_TakeInventory("DWLeftRockOnFlag",1)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
Goto Ready2

User1:
DRWH AA 1
TNT1 A 0 A_GiveInventory("DWRocketFlag",1)
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",112)
TNT1 A 1 A_Jump(256,"ShortMissile","LongMissile")
wait
ShortMissile:
TNT1 A 0 A_PlaySound("weapon/wilyrocketshort",1,0.6)
TNT1 A 0 A_FireCustomMissile("ShortRocketStart",0,0,0,Z_OFS)
Goto User1.Cont
LongMissile:
TNT1 A 0 A_PlaySound("weapon/wilyrocketlong",1,0.6)
TNT1 A 0 A_FireCustomMissile("LongRocketStart",0,0,0,Z_OFS)
Goto User1.Cont
User1.Cont:
DRWH A 35
TNT1 A 0 A_TakeInventory("DWRocketFlag",1)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
Goto Ready2

UltimateAttack:
DRWH A 1 A_GiveInventory("TrueDrWilyUltimateStart1PickUp",1)
DRWH AAAAA 1 ACS_NamedExecuteWithResult("VC_SetState",1)
TNT1 A 0 A_GiveInventory("DWHandFlash1Flag",1)
TNT1 A 0 A_TakeInventory("DWHandFlash2Flag",1)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
DRWH BBBBBBBBBB 1 ACS_NamedExecuteWithResult("VC_SetState",2)
TNT1 A 0 A_TakeInventory("DWHandFlash1Flag",1)
TNT1 A 0 A_GiveInventory("DWHandFlash2Flag",1)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
TNT1 A 0 A_PlaySoundEx("weapons/mm7/thunderboltfire","Body",0,1)
DRWH CCCCCCCCCC 1 ACS_NamedExecuteWithResult("VC_SetState",3)
TNT1 A 0 A_GiveInventory("DWHandFlash1Flag",1)
TNT1 A 0 A_TakeInventory("DWHandFlash2Flag",1)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
DRWH BBBBBBBBBB 1 ACS_NamedExecuteWithResult("VC_SetState",2)
TNT1 A 0 A_TakeInventory("DWHandFlash1Flag",1)
TNT1 A 0 A_GiveInventory("DWHandFlash2Flag",1)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
TNT1 A 0 A_PlaySoundEx("weapons/mm7/thunderboltfire","Body",0,1)
DRWH CCCCCCCCCC 1 ACS_NamedExecuteWithResult("VC_SetState",3)
TNT1 A 0 A_GiveInventory("DWHandFlash1Flag",1)
TNT1 A 0 A_TakeInventory("DWHandFlash2Flag",1)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
DRWH BBBBBBBBBB 1 ACS_NamedExecuteWithResult("VC_SetState",2)
TNT1 A 0 A_GiveInventory("VCOnce",1)
TNT1 A 0 A_SpawnItemEx("WilyMachineAlienWarper")
TNT1 A 0 A_TakeInventory("DWHandFlash1Flag",1)
TNT1 A 0 A_GiveInventory("DWHandFlash2Flag",1)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
TNT1 A 0 A_PlaySoundEx("weapons/mm7/thunderboltfire","Body",0,1)
DRWH CCCCCCCCCC 1 ACS_NamedExecuteWithResult("VC_SetState",3)
TNT1 A 0 A_GiveInventory("DWHandFlash1Flag",1)
TNT1 A 0 A_TakeInventory("DWHandFlash2Flag",1)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
DRWH BBBBBBBBBB 1 ACS_NamedExecuteWithResult("VC_SetState",2)
TNT1 A 0 A_TakeInventory("DWHandFlash1Flag",1)
TNT1 A 0 A_GiveInventory("DWHandFlash2Flag",1)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
TNT1 A 0 A_PlaySoundEx("weapons/mm7/thunderboltfire","Body",0,1)
DRWH CCCCCCCCCC 1 ACS_NamedExecuteWithResult("VC_SetState",3)
TNT1 A 0 A_GiveInventory("DWHandFlash1Flag",1)
TNT1 A 0 A_TakeInventory("DWHandFlash2Flag",1)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
DRWH BBBBBBBBBB 1 ACS_NamedExecuteWithResult("VC_SetState",2)
TNT1 A 0 A_TakeInventory("DWHandFlash1Flag",1)
TNT1 A 0 A_GiveInventory("DWHandFlash2Flag",1)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
TNT1 A 0 A_PlaySoundEx("weapons/mm7/thunderboltfire","Body",0,1)
DRWH CCCCCCCCCC 1 ACS_NamedExecuteWithResult("VC_SetState",3)
TNT1 A 0 A_GiveInventory("DWHandFlash1Flag",1)
TNT1 A 0 A_TakeInventory("DWHandFlash2Flag",1)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
DRWH BBBBBBBBBB 1 ACS_NamedExecuteWithResult("VC_SetState",2)
TNT1 A 0 A_TakeInventory("DWHandFlash1Flag",1)
TNT1 A 0 A_GiveInventory("DWHandFlash2Flag",1)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
TNT1 A 0 A_PlaySoundEx("weapons/mm7/thunderboltfire","Body",0,1)
DRWH CCCCCCCCCC 1 ACS_NamedExecuteWithResult("VC_SetState",3)
TNT1 A 0 A_TakeInventory("DWHandFlash1Flag",1)
TNT1 A 0 A_TakeInventory("DWHandFlash2Flag",1)
TNT1 A 0 A_GiveInventory("TDWHandTrigger",1)
DRWH AAAAA 1 ACS_NamedExecuteWithResult("VC_SetState",1)
TNT1 A 0 A_GiveInventory("TrueDrWilyUltimateStart2PickUp",1)
TNT1 A 0 A_GunFlash
Goto Ready2

Flash:
TNT1 A 1
TNT1 A 0 A_JumpIfInventory("DWUltimateActiveFlag",1,"Flash2")
Goto EndFlash

Flash2:
TNT1 A 0 A_GiveInventory("DWUltCapsuleFlag",1)
TNT1 A 0 A_spawnItemEx("WilyCapsuleXStart",0,0,56,50,0,Random(-50,50),Random(0,359))
Goto FlashHold

FlashHold:
TNT1 AA 1 A_JumpIfInventory("IsDead",1,"EndFlash")
TNT1 A 1 A_JumpIfInventory("DWUltCapsuleFlag",1,"FlashHold")
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_JumpIfInventory("IsDead",1,"EndFlash")
Goto Flash

EndFlash:
TNT1 A 0
stop
}
}

Actor WilyMachineSpawner
{
Translation "192:192=248:248", "198:198=75:75"
+NOINTERACTION
+THRUSPECIES
+THRUACTORS
+MISSILE
Species "WilyMachineHands"
Height 8
Radius 8
Scale 2.5
var int User_Z;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_SetUserVar("User_Z",640)
TNT1 A 0 A_PlaySoundEx("misc/catcherdrop","Auto")
TNT1 AA 1 A_Warp(AAPTR_TARGET,0,0,User_Z,0,24)
Spawn2:
TDRW A 1 A_Warp(AAPTR_TARGET,0,0,User_Z,0,24)
TNT1 A 0 A_SetUserVar("User_Z",User_Z-24)
TNT1 A 0 A_JumpIf(User_Z<=0,"Death")
loop
Death:
TNT1 A 0 A_Quake(3,70,0,500)
TNT1 A 0 A_SetUserVar("User_Z",0)
TNT1 A 0 A_GiveToTarget("BaseCustomFlag1",1)
TNT1 A 0 A_PlaySoundEx("weapon/WilyPressCrush","Body")
TNT1 A 0 A_SpawnItemEx("TrueWilyIntroHitbox",0,0,-3)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("WilyMachineRubble",Random(96,192),0,0,0,0,Random(5,20),Random(0,359))
TDRW AAAA 1 A_Warp(AAPTR_TARGET,0,0,User_Z,0,24)
TNT1 A 66 A_ChangeFlag("NOINTERACTION",True)
stop
}
}

Actor TrueWilyIntroHitbox : QuakeDamage
{
Obituary "$OB_TRUEDRWILY11"
damageType "MadGrinder"
States
{
Spawn:
TNT1 A 0
TNT1 A 2 A_Explode(200,100,0,0,100)
stop
}
}

Actor WilyMachineRubble
{
PROJECTILE
-NOGRAVITY
+BOUNCEONWALLS
+THRUSPECIES
+NOINTERACTION
Species "WilyMachineHands"
gravity 1.0
height 4
radius 8
Scale 2.5
reactiontime 350
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 1 A_Jump(256,"A","B","C","D","E","F","G")
wait
A:
BASL E 1 ThrustThingZ(0,2,1,1)
BASL E 0 A_ChangeFlag("NOINTERACTION",0)
loop
B:
BASL F 1 ThrustThingZ(0,2,1,1)
BASL F 0 A_ChangeFlag("NOINTERACTION",0)
loop
C:
BASL G 1 ThrustThingZ(0,2,1,1)
BASL G 0 A_ChangeFlag("NOINTERACTION",0)
loop
D:
BASL H 1 ThrustThingZ(0,2,1,1)
BASL H 0 A_ChangeFlag("NOINTERACTION",0)
loop
E:
BASL I 1 ThrustThingZ(0,2,1,1)
BASL I 0 A_ChangeFlag("NOINTERACTION",0)
loop
F:
BASL J 1 ThrustThingZ(0,2,1,1)
BASL J 0 A_ChangeFlag("NOINTERACTION",0)
loop
G:
BASL K 1 ThrustThingZ(0,2,1,1)
BASL K 0 A_ChangeFlag("NOINTERACTION",0)
loop
}
}

actor TDWHandTrigger : Powerup
{
    powerup.duration 4
}


Actor WilyMachineRightHand : BasicShieldHitbox
{
Translation "192:192=248:248", "198:198=75:75"
-NOINTERACTION
+CANTSEEK
+INVULNERABLE
+NOTARGETSWITCH
+DONTIDENTIFYTARGET
+DONTREFLECT
Damagefactor "Beam", 0.0
Damagefactor "FireTrap", 0.0
Damagefactor "FirePillar", 0.0
Species "WilyMachineHands"
renderstyle "translucent"
Height 30
Radius 13
Scale 2.5
const int OFS = 1;
var int User_Z;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_SetUserVar("User_Z",320)
TNT1 A 0 ACS_NamedExecuteWithResult("core_alphaprojectile", CallACS("core_getptrtid", AAPTR_TARGET), APROJ_TEAM, 6553, 128)
Spawn.Waiting:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 1 A_Warp(AAPTR_TARGET,X_OFS,Y_OFS,User_Z,0,24)
TNT1 A 0 A_JumpIfInTargetInventory("DWSummonHandsFlag",1,1)
loop
Spawn.Descend:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn")
WHND A 1 A_Warp(AAPTR_TARGET,X_OFS,Y_OFS,User_Z,0,24)
TNT1 A 0 A_SetUserVar("User_Z",User_Z-16)
TNT1 A 0 A_JumpIf(User_Z<=Z_OFS,1)
loop
TNT1 A 0 A_PlaySoundEx("weapon/adapterreturn","Voice")
TNT1 A 0 A_GiveToTarget("BaseCustomFlag2",1)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",False)
Spawn.Active:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn")
TNT1 A 0 A_JumpIfInTargetInventory("DWRightChargeFlag",1,"Spawn.Charging1")
TNT1 A 0 A_JumpIfInTargetInventory("DWHandFlash1Flag",1,"Spawn.UltHand1")
TNT1 A 0 A_JumpIfInTargetInventory("DWHandFlash2Flag",1,"Spawn.UltHand2")
TNT1 A 0 A_JumpIfInTargetInventory("DWRightFistFlag",1,"Spawn.Invis")
TNT1 A 0 A_JumpIfInTargetInventory("DWRocketFlag",1,"Spawn.Rocket")
TNT1 A 0 A_JumpIfInTargetInventory("DWLaserFlag",1,"Spawn.Laser")
WHND A 1 A_Warp(AAPTR_TARGET,X_OFS,Y_OFS,Z_OFS,0,24)
loop

Spawn.Charging1:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Charging")
WHND C 1 A_Warp(AAPTR_TARGET,X_OFS,Y_OFS,Z_OFS,0,24)
TNT1 A 0 A_JumpIfInTargetInventory("TDWHandTrigger",1,"Spawn.Finish")
TNT1 A 0 A_JumpIfInTargetInventory("DWRightFistFlag",1,"Spawn.Invis")
TNT1 A 0 A_JumpIfInTargetInventory("DWLaserFlag",1,"Spawn.Laser")
loop

Spawn.Invis:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_ChangeFlag("NOINTERACTION",True)
TNT1 A 1 A_Warp(AAPTR_TARGET,X_OFS,Y_OFS,Z_OFS,0,24)
TNT1 A 0 A_JumpIfInTargetInventory("TDWHandTrigger",1,"Spawn.Finish")
loop

Spawn.Laser:
WHND A 1 A_Warp(AAPTR_TARGET,X_OFS,Y_OFS-5,Z_OFS,0,24) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
WHND A 1 A_Warp(AAPTR_TARGET,X_OFS,Y_OFS-10,Z_OFS,0,24) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
WHND A 1 A_Warp(AAPTR_TARGET,X_OFS,Y_OFS-15,Z_OFS,0,24) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
Spawn.Laser.Waiting:
WHND A 1 A_Warp(AAPTR_TARGET,X_OFS,Y_OFS-22,Z_OFS,0,24)
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("TDWHandTrigger",1,"Spawn.Laser.End")
loop
Spawn.Laser.End:
WHND A 1 A_Warp(AAPTR_TARGET,X_OFS,Y_OFS-15,Z_OFS,0,24) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
WHND A 1 A_Warp(AAPTR_TARGET,X_OFS,Y_OFS-10,Z_OFS,0,24) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
WHND A 1 A_Warp(AAPTR_TARGET,X_OFS,Y_OFS-5,Z_OFS,0,24) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
Goto Spawn.Active

Spawn.Rocket:
WHND C 1 A_Warp(AAPTR_TARGET,X_OFS,Y_OFS,Z_OFS+2,0,24) TNT1 A 0 A_JumpIfInTargetInventory("TDWHandTrigger",1,"Spawn.Finish")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Charging") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
WHND C 1 A_Warp(AAPTR_TARGET,X_OFS,Y_OFS,Z_OFS-2,0,24) TNT1 A 0 A_JumpIfInTargetInventory("TDWHandTrigger",1,"Spawn.Finish")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Charging") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
loop

Spawn.UltHand1:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn")
WHND I 1 A_Warp(AAPTR_TARGET,X_OFS,Y_OFS,Z_OFS,0,24)
TNT1 A 0 A_JumpIfInTargetInventory("TDWHandTrigger",1,"Spawn.Finish")
loop

Spawn.UltHand2:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn")
WHND K 1 A_Warp(AAPTR_TARGET,X_OFS,Y_OFS,Z_OFS,0,24)
TNT1 A 0 A_JumpIfInTargetInventory("TDWHandTrigger",1,"Spawn.Finish")
loop

Spawn.Finish:
TNT1 A 0 A_ChangeFlag("NOINTERACTION",False)
Goto Spawn.Active

Pain:
TNT1 A 0
TNT1 A 0 A_PlaySound("mm9/reflect")
TNT1 A 0 A_JumpIfInTargetInventory("DWRightChargeFlag",1,"Spawn.Charging1")
TNT1 A 0 A_JumpIfInTargetInventory("DWHandFlash1Flag",1,"Spawn.UltHand1")
TNT1 A 0 A_JumpIfInTargetInventory("DWHandFlash2Flag",1,"Spawn.UltHand2")
TNT1 A 0 A_JumpIfInTargetInventory("DWRightFistFlag",1,"Spawn.Invis")
TNT1 A 0 A_JumpIfInTargetInventory("DWRocketFlag",1,"Spawn.Rocket")
TNT1 A 0 A_JumpIfInTargetInventory("DWLaserFlag",1,"Spawn.Laser")
Goto Spawn.Active

Death.Spawn:
TNT1 A 0 A_SpawnItemEx("DeadRightHand")
Goto Death
Death.Charging:
TNT1 A 0 A_SpawnItemEx("DeadRightFist")
Goto Death
Death:
TNT1 A 0
stop
}
}

Actor WilyMachineLeftHand : WilyMachineRightHand
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_SetUserVar("User_Z",320)
TNT1 A 0 ACS_NamedExecuteWithResult("core_alphaprojectile", CallACS("core_getptrtid", AAPTR_TARGET), APROJ_TEAM, 6553, 128)
Spawn.Waiting:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 1 A_Warp(AAPTR_TARGET,X_OFS,-Y_OFS,User_Z,0,24)
TNT1 A 0 A_JumpIfInTargetInventory("DWSummonHandsFlag",1,1)
loop
Spawn.Descend:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn")
WHND B 1 A_Warp(AAPTR_TARGET,X_OFS,-Y_OFS,User_Z,0,24)
TNT1 A 0 A_SetUserVar("User_Z",User_Z-16)
TNT1 A 0 A_JumpIf(User_Z<=Z_OFS,1)
loop
TNT1 A 0 A_PlaySoundEx("weapon/adapterreturn","Voice")
TNT1 A 0 A_GiveToTarget("BaseCustomFlag2",1)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",False)
Spawn.Active:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn")
TNT1 A 0 A_JumpIfInTargetInventory("DWLeftChargeFlag",1,"Spawn.Charging1")
TNT1 A 0 A_JumpIfInTargetInventory("DWLeftRockOnFlag",1,"Spawn.FingerGun")
TNT1 A 0 A_JumpIfInTargetInventory("DWHandFlash1Flag",1,"Spawn.UltHand1")
TNT1 A 0 A_JumpIfInTargetInventory("DWHandFlash2Flag",1,"Spawn.UltHand2")
TNT1 A 0 A_JumpIfInTargetInventory("DWLeftFistFlag",1,"Spawn.Invis")
TNT1 A 0 A_JumpIfInTargetInventory("DWRocketFlag",1,"Spawn.Rocket")
TNT1 A 0 A_JumpIfInTargetInventory("DWLaserFlag",1,"Spawn.Laser")
WHND B 1 A_Warp(AAPTR_TARGET,X_OFS,-Y_OFS,Z_OFS,0,24)
loop

Spawn.Charging1:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Charging")
WHND D 1 A_Warp(AAPTR_TARGET,X_OFS,-Y_OFS,Z_OFS,0,24)
TNT1 A 0 A_JumpIfInTargetInventory("TDWHandTrigger",1,"Spawn.Finish")
TNT1 A 0 A_JumpIfInTargetInventory("DWLeftFistFlag",1,"Spawn.Invis")
TNT1 A 0 A_JumpIfInTargetInventory("DWLeftRockOnFlag",1,"Spawn.FingerGun")
TNT1 A 0 A_JumpIfInTargetInventory("DWLaserFlag",1,"Spawn.Laser")
loop

Spawn.Invis:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_ChangeFlag("NOINTERACTION",True)
TNT1 A 1 A_Warp(AAPTR_TARGET,X_OFS,-Y_OFS,Z_OFS,0,24)
TNT1 A 0 A_JumpIfInTargetInventory("TDWHandTrigger",1,"Spawn.Finish")
loop

Spawn.Laser:
WHND B 1 A_Warp(AAPTR_TARGET,X_OFS,-Y_OFS+5,Z_OFS,0,24) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
WHND B 1 A_Warp(AAPTR_TARGET,X_OFS,-Y_OFS+10,Z_OFS,0,24) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
WHND B 1 A_Warp(AAPTR_TARGET,X_OFS,-Y_OFS+15,Z_OFS,0,24) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
Spawn.Laser.Waiting:
WHND B 1 A_Warp(AAPTR_TARGET,X_OFS,-Y_OFS+22,Z_OFS,0,24)
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("TDWHandTrigger",1,"Spawn.Laser.End")
loop
Spawn.Laser.End:
WHND B 1 A_Warp(AAPTR_TARGET,X_OFS,-Y_OFS+15,Z_OFS,0,24) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
WHND B 1 A_Warp(AAPTR_TARGET,X_OFS,-Y_OFS+10,Z_OFS,0,24) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
WHND B 1 A_Warp(AAPTR_TARGET,X_OFS,-Y_OFS+5,Z_OFS,0,24) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
Goto Spawn.Active

Spawn.Rocket:
WHND D 1 A_Warp(AAPTR_TARGET,X_OFS,-Y_OFS,Z_OFS+2,0,24) TNT1 A 0 A_JumpIfInTargetInventory("TDWHandTrigger",1,"Spawn.Finish")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Charging") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
WHND D 1 A_Warp(AAPTR_TARGET,X_OFS,-Y_OFS,Z_OFS-2,0,24) TNT1 A 0 A_JumpIfInTargetInventory("TDWHandTrigger",1,"Spawn.Finish")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Charging") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
loop

Spawn.FingerGun:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.FingerGun")
WHND F 1 A_Warp(AAPTR_TARGET,X_OFS,-Y_OFS,Z_OFS,0,24)
TNT1 A 0 A_JumpIfInTargetInventory("TDWHandTrigger",1,"Spawn.Finish")
loop

Spawn.UltHand1:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn")
WHND J 1 A_Warp(AAPTR_TARGET,X_OFS,-Y_OFS,Z_OFS,0,24)
TNT1 A 0 A_JumpIfInTargetInventory("TDWHandTrigger",1,"Spawn.Finish")
loop

Spawn.UltHand2:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Spawn")
WHND L 1 A_Warp(AAPTR_TARGET,X_OFS,-Y_OFS,Z_OFS,0,24)
TNT1 A 0 A_JumpIfInTargetInventory("TDWHandTrigger",1,"Spawn.Finish")
loop

Spawn.Finish:
TNT1 A 0 A_ChangeFlag("NOINTERACTION",False)
Goto Spawn.Active

Pain:
TNT1 A 0
TNT1 A 0 A_PlaySound("mm9/reflect")
TNT1 A 0 A_JumpIfInTargetInventory("DWLeftChargeFlag",1,"Spawn.Charging1")
TNT1 A 0 A_JumpIfInTargetInventory("DWLeftRockOnFlag",1,"Spawn.FingerGun")
TNT1 A 0 A_JumpIfInTargetInventory("DWHandFlash1Flag",1,"Spawn.UltHand1")
TNT1 A 0 A_JumpIfInTargetInventory("DWHandFlash2Flag",1,"Spawn.UltHand2")
TNT1 A 0 A_JumpIfInTargetInventory("DWLeftFistFlag",1,"Spawn.Invis")
TNT1 A 0 A_JumpIfInTargetInventory("DWRocketFlag",1,"Spawn.Rocket")
TNT1 A 0 A_JumpIfInTargetInventory("DWLaserFlag",1,"Spawn.Laser")
Goto Spawn.Active

Death.Spawn:
TNT1 A 0 A_SpawnItemEx("DeadLeftHand")
Goto Death
Death.Charging:
TNT1 A 0 A_SpawnItemEx("DeadLeftFist")
Goto Death
Death.FingerGun:
TNT1 A 0 A_SpawnItemEx("DeadFingerGun")
Goto Death
}
}

Actor WilyMachineAmmoWatcher
{
+MISSILE
-SOLID
+NOGRAVITY
+NOINTERACTION
Height 0
Radius 0
States
{
Spawn: 
TNT1 AA 0
Spawn2:
//TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 AAA 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_GiveToTarget("BaseAltfireAmmo",1)
loop
Death:
TNT1 A 0
stop
}
}

Actor WilyMachineRightFist
{
Translation "192:192=248:248", "198:198=75:75"
PROJECTILE
-NOINTERACTION
+SKYEXPLODE
+DONTREFLECT
+THRUSPECIES
Species "WilyMachineHands"
damagetype "WilyMachineMain1"
Obituary "$OB_TRUEDRWILY1"
Damage(20)
Speed 45
radius 24
height 32
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Fist")
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag",140,"Vanish")
TNT1 A 0 A_SpawnItemEx("WilyMachineHandBlocker")
WHND C 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Vanish")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",15,"Waiting")
Goto Spawn+2
Death:
TNT1 A 0 A_CheckFloor("Death.Floor")
TNT1 A 0 A_CheckCeiling("Death.Ceiling")
TNT1 AAAAA 0 A_SpawnItemEx("WilyMachineRubble",0,0,0,Random(5,10),0,Random(4,8),Random(0,359))
Goto Death2
Death.Floor:
TNT1 AAAAA 0 A_SpawnItemEx("WilyMachineRubble",40,0,8,0,0,Random(4,12),Random(0,359))
Goto Death2
Death.Ceiling:
TNT1 AAAAA 0 A_SpawnItemEx("WilyMachineRubble",40,0,0,0,0,Random(-5,0),Random(0,359))
Goto Death2
XDeath:
TNT1 A 0 A_ChangeFlag("NOINTERACTION",True)
TNT1 A 0 A_PlaySoundEx("assist/hoohoorock","Body")
Death2:
TNT1 A 0 A_PlaySoundEx("misc/quake","Body")
TNT1 A 0 A_Quake(2,10,0,300)
TNT1 A 0 A_ChangeFlag("NOINTERACTION",True)
Waiting:
WHND C 1 A_Stop
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Fist")
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag",140,"Vanish")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Vanish")
TNT1 A 0 A_SpawnItemEx("WilyMachineHandBlocker")
TNT1 A 0 A_GiveInventory("VCOnceMore",1)
TNT1 A 0 A_JumpIfInventory("VCOnceMore",15,"WaitingEnd")
loop
WaitingEnd:
TNT1 A 0 A_SpawnItemEx("ReturningWilyMachineRightHand")
stop
End:
NAPA FGHIJKLMNOPQRS 1
stop
Death.Fist:
TNT1 A 0 A_SpawnItemEx("DeadRightFist")
stop
Vanish:
TNT1 A 0
stop
}
}

Actor ReturningWilyMachineRightHand : WilyMachineRightFist
{
+NOINTERACTION
+NOCLIP
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Hand")
TNT1 A 0 A_FaceTarget TNT1 A 0 A_JumpIfCloser(64,"Return")
TNT1 A 0 A_SpawnItemEx("WilyMachineHandBlocker",0,0,0,momx,momy,momz)
WHND G 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Vanish")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Hand")
TNT1 A 0 A_FaceTarget TNT1 A 0 A_JumpIfCloser(64,"Return")
TNT1 A 0 A_SpawnItemEx("WilyMachineHandBlocker",0,0,0,momx,momy,momz)
WHND G 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Vanish")
TNT1 A 0 A_CustomMissile("ReturningWilyMachineRightHand",0,0)
stop
Return:
TNT1 A 0 A_TakeFromTarget("DWRightFistFlag",1)
TNT1 A 0 A_PlaySoundEx("weapon/adapterreturn","Voice")
stop
Death.Hand:
TNT1 A 0 A_SpawnItemEx("DeadRightHand",0,0,0,0,0,0,180)
stop
}
}

Actor WilyMachineHandBlocker
{
PROJECTILE
-NOBLOCKMAP
+GHOST
+NOBLOOD
+DONTRIP
+SHOOTABLE
+NORADIUSDMG
+DONTREFLECT
+THRUSPECIES
Species "WilyMachineHands"
painchance 256
health 9999
mass 9999
radius 16
height 32
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 1
stop
Pain:
TNT1 A 0 A_PlaySoundEx("mm9/reflect","Body")
stop
}
}

Actor WilyMachineVIShot
{
PROJECTILE
-NOINTERACTION
+THRUSPECIES
Species "WilyMachineHands"
damagetype "WilyMachineMain2"
Obituary "$OB_TRUEDRWILY2"
Damage (25)
Speed 35
Radius 40
Height 40
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 3
TNT1 A 0 A_ChangeFlag("NOINTERACTION",False)
Spawn2:
DRW2 CD 1
loop
}
}

Actor WilyMachineLightningOrbWarper
{
+MISSILE
-SOLID
+NOCLIP
+NOGRAVITY
+NOINTERACTION
+CLIENTSIDEONLY
species "WilyMachineHands"
Height 0
Radius 0
scale 2.5
const int OFS = 32;
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Warp(AAPTR_TARGET,X_OFS+40,Y_OFS,Z_OFS+32,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death") TNT1 A 0 A_JumpIfInTargetInventory("WilyMachineLightningActivate",1,"Death")
TNT1 A 1 A_Warp(AAPTR_TARGET,X_OFS+40,Y_OFS,Z_OFS+32,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death") TNT1 A 0 A_JumpIfInTargetInventory("WilyMachineLightningActivate",1,"Death")
Spawn2:
TDW2 A 1 A_Warp(AAPTR_TARGET,X_OFS+40,Y_OFS,Z_OFS+32,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death") TNT1 A 0 A_JumpIfInTargetInventory("WilyMachineLightningActivate",1,"Death")
TDW2 B 1 A_Warp(AAPTR_TARGET,X_OFS+40,Y_OFS,Z_OFS+32,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death") TNT1 A 0 A_JumpIfInTargetInventory("WilyMachineLightningActivate",1,"Death")
TDW2 C 1 A_Warp(AAPTR_TARGET,X_OFS+40,Y_OFS,Z_OFS+32,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death") TNT1 A 0 A_JumpIfInTargetInventory("WilyMachineLightningActivate",1,"Death")
TDW2 D 1 A_Warp(AAPTR_TARGET,X_OFS+40,Y_OFS,Z_OFS+32,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death") TNT1 A 0 A_JumpIfInTargetInventory("WilyMachineLightningActivate",1,"Death")
TDW2 E 1 A_Warp(AAPTR_TARGET,X_OFS+40,Y_OFS,Z_OFS+32,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death") TNT1 A 0 A_JumpIfInTargetInventory("WilyMachineLightningActivate",1,"Death")
loop
Death:
TNT1 A 0
stop
}
}

Actor WilyMachineLightningOrbStart
{
PROJECTILE
+RIPPER
species "WilyMachineHands"
damagetype "WilyMachineMain3"
Obituary "$OB_TRUEDRWILY3"
Damage (8)
Radius 8
Height 16
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TDW2 ABCDE 1
Goto Spawn+2
Death:
TNT1 A 0 A_CheckFloor("Death.Floor")
TNT1 A 0 A_CheckCeiling("Death.Ceiling")
TNT1 A 0 A_SpawnItemEx("WilyMachineLightningOrb",-32,0,0,25,0,0,0,SXF_TRANSFERPOINTERS)
stop
Death.Floor:
Death.Ceiling:
TNT1 A 0 A_SpawnItemEx("WilyMachineLightningOrb",0,0,0,25,0,0,0,SXF_TRANSFERPOINTERS)
stop
}
}

Actor WilyMachineLightningOrb : WilyMachineLightningOrbStart
{
PROJECTILE
+RIPPER
species "WilyMachineHands"
damagetype "WilyMachineMain3"
Obituary "$OB_TRUEDRWILY3"
Damage (8)
Radius 8
Height 16
Scale 2.5
+FLOORHUGGER
const int Z_OFS = 32;
const int DMG = 4;
const int RNG = 96;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
Spawn2:
TNT1 A 0 A_PlaySoundEx("misc/wilylightning","Body")
TNT1 AA 0 A_SpawnItemEx("LightningStrikePuff",0,0,0,Random(5,10),0,Random(0,15),Random(0,359))
TNT1 A 0 A_Explode(DMG,RNG,0) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"End")
TDW2 A 1 A_SpawnItemEx("WilyMachineLightningOrbFX1",0,0,16,0,0,0,0,SXF_ABSOLUTEANGLE|SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPOINTERS)
TNT1 AA 0 A_SpawnItemEx("LightningStrikePuff",0,0,0,Random(5,10),0,Random(0,15),Random(0,359))
TNT1 A 0 A_Explode(DMG,RNG,0) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"End")
TDW2 B 1 A_SpawnItemEx("WilyMachineLightningOrbFX2",0,0,16,0,0,0,0,SXF_ABSOLUTEANGLE|SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPOINTERS)
TNT1 AA 0 A_SpawnItemEx("LightningStrikePuff",0,0,0,Random(5,10),0,Random(0,15),Random(0,359))
TNT1 A 0 A_Explode(DMG,RNG,0) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"End")
TDW2 C 1 A_SpawnItemEx("WilyMachineLightningOrbFX1",0,0,16,0,0,0,0,SXF_ABSOLUTEANGLE|SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPOINTERS)
TNT1 AA 0 A_SpawnItemEx("LightningStrikePuff",0,0,0,Random(5,10),0,Random(0,15),Random(0,359))
TNT1 A 0 A_Explode(DMG,RNG,0) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"End")
TDW2 D 1 A_SpawnItemEx("WilyMachineLightningOrbFX2",0,0,16,0,0,0,0,SXF_ABSOLUTEANGLE|SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPOINTERS)
TNT1 AA 0 A_SpawnItemEx("LightningStrikePuff",0,0,0,Random(5,10),0,Random(0,15),Random(0,359))
TNT1 A 0 A_Explode(DMG,RNG,0) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"End")
TDW2 E 1 A_SpawnItemEx("WilyMachineLightningOrbFX1",0,0,16,0,0,0,0,SXF_ABSOLUTEANGLE|SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPOINTERS)
TNT1 AA 0 A_SpawnItemEx("LightningStrikePuff",0,0,0,Random(5,10),0,Random(0,15),Random(0,359))
TNT1 A 0 A_Explode(DMG,RNG,0) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"End")
TDW2 A 1 A_SpawnItemEx("WilyMachineLightningOrbFX2",0,0,16,0,0,0,0,SXF_ABSOLUTEANGLE|SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPOINTERS)
TNT1 AA 0 A_SpawnItemEx("LightningStrikePuff",0,0,0,Random(5,10),0,Random(0,15),Random(0,359))
TNT1 A 0 A_Explode(DMG,RNG,0) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"End")
TDW2 B 1 A_SpawnItemEx("WilyMachineLightningOrbFX1",0,0,16,0,0,0,0,SXF_ABSOLUTEANGLE|SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPOINTERS)
TNT1 AA 0 A_SpawnItemEx("LightningStrikePuff",0,0,0,Random(5,10),0,Random(0,15),Random(0,359))
TNT1 A 0 A_Explode(DMG,RNG,0) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"End")
TDW2 C 1 A_SpawnItemEx("WilyMachineLightningOrbFX2",0,0,16,0,0,0,0,SXF_ABSOLUTEANGLE|SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPOINTERS)
TNT1 AA 0 A_SpawnItemEx("LightningStrikePuff",0,0,0,Random(5,10),0,Random(0,15),Random(0,359))
TNT1 A 0 A_Explode(DMG,RNG,0) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"End")
TDW2 D 1 A_SpawnItemEx("WilyMachineLightningOrbFX1",0,0,16,0,0,0,0,SXF_ABSOLUTEANGLE|SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPOINTERS)
TNT1 AA 0 A_SpawnItemEx("LightningStrikePuff",0,0,0,Random(5,10),0,Random(0,15),Random(0,359))
TNT1 A 0 A_Explode(DMG,RNG,0) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"End")
TDW2 E 1 A_SpawnItemEx("WilyMachineLightningOrbFX2",0,0,16,0,0,0,0,SXF_ABSOLUTEANGLE|SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPOINTERS)
loop
Death:
TNT1 A 0
stop
End:
TNT1 A 0
stop
}
}

Actor LightningStrikePuff
{
PROJECTILE
+NOINTERACTION
+FORCEXYBILLBOARD
alpha 1.0
radius 2
height 2
scale 2.5
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TDWP IIIJJJ 1 bright A_FadeOut(0.04)
stop
}
}

Actor WilyMachineLightningOrbFX1 : WilyMachineLightningOrb
{
-FLOORHUGGER
species "WilyMachineHands"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_JumpIf(z-floorz<=600,1)
stop
TNT1 A 0 A_SpawnItemEx("LightningStrikeFX",Random(8,40),0,0,0,0,0,Random(0,359))
TNT1 A 0 A_SpawnItemEx("WilyMachineLightningOrbFX1",0,0,32,0,0,0,0,SXF_ABSOLUTEANGLE|SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPOINTERS)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"End")
TDWP M 1 A_Explode(DMG,RNG,0)
stop
}
}

Actor WilyMachineLightningOrbFX2 : WilyMachineLightningOrbFX1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_JumpIf(z-floorz<=600,1)
stop
TNT1 A 0 A_SpawnItemEx("LightningStrikeFX",Random(8,40),0,0,0,0,0,Random(0,359))
TNT1 A 0 A_SpawnItemEx("WilyMachineLightningOrbFX2",0,0,32,0,0,0,0,SXF_ABSOLUTEANGLE|SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPOINTERS)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TDWP N 1 A_Explode(DMG,RNG,0)
stop
}
}

Actor LightningStrikeFX
{
PROJECTILE
+NOINTERACTION
species "WilyMachineHands"
damagetype "WilyMachineMain3B"
Obituary "$OB_TRUEDRWILY3"
alpha 0.9
Damage (0)
Radius 4
Height 8
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_Jump(64,"Spawn2")
stop
Spawn2:
TDWP IIIJJJ 1 A_Explode(3,64,0)
stop
}
}

Actor WilyMachineLightningActivate : PowerUp
{
Powerup.Duration 5
}

Actor WilyMachineLightningProtect : PowerProtection
{
	Powerup.Duration 1
	DamageFactor "WilyMachineMain3", 0.0
}

Actor WilyMachineLightningProtect2 : PowerProtection
{
	Powerup.Duration 1
	DamageFactor "WilyMachineMain3B", 0.0
}

const int OFS_1 = 32;
const int OFS_2 = 10;
const int DST = 1200;

Actor WilyMachineLaserSpawner1
{
+MISSILE
+THRUGHOST
species "WilyMachineHands"
damagetype "WilyMachineSynth"
Obituary "$OB_TRUEDRWILY4"
height 4
radius 4
scale 2.5
renderstyle add
alpha 0.9
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_SpawnItemEx("WilyMachineLaserBeam1",OFS_1)
TNT1 A 1 A_SpawnItemEx("WilyMachineLaserDamager1",OFS_2)
stop
Death:
TNT1 AAA 0 A_SpawnItemEx("WilyMachineRubble",0,0,0,Random(5,10),0,Random(0,5),Random(0,359))
stop
}
}

Actor WilyMachineLaserSpawner2 : WilyMachineLaserSpawner1
{
height 8
radius 8
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_SpawnItemEx("WilyMachineLaserBeam2",OFS_1)
TNT1 A 1 A_SpawnItemEx("WilyMachineLaserDamager2",OFS_2)
stop
}
}

Actor WilyMachineLaserSpawner3 : WilyMachineLaserSpawner1
{
height 16
radius 16
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_SpawnItemEx("WilyMachineLaserBeam3",OFS_1)
TNT1 A 1 A_SpawnItemEx("WilyMachineLaserDamager3",OFS_2)
stop
}
}

Actor WilyMachineLaserSpawner4 : WilyMachineLaserSpawner1
{
height 32
radius 32
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_SpawnItemEx("WilyMachineLaserBeam4",OFS_1)
TNT1 A 1 A_SpawnItemEx("WilyMachineLaserDamager4",OFS_2)
stop
}
}

Actor WilyMachineLaserSpawner5 : WilyMachineLaserSpawner1
{
height 64
radius 64
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_SpawnItemEx("WilyMachineLaserBeam5",OFS_1)
TNT1 A 1 A_SpawnItemEx("WilyMachineLaserDamager5",OFS_2)
stop
}
}

Actor WilyMachineLaserSpawner6 : WilyMachineLaserSpawner5
{
height 64
radius 64
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_SpawnItemEx("WilyMachineLaserBeam6",OFS_1)
TNT1 A 1 A_SpawnItemEx("WilyMachineLaserDamager5",OFS_2)
stop
}
}

Actor WilyMachineLaserBeam1 : WilyMachineLaserSpawner1
{
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_JumpIfCloser(DST,"Spawn2")
stop
Spawn2:
TDW2 I 1 A_SpawnItemEx("WilyMachineLaserBeam1",OFS_2)
stop
}
}

Actor WilyMachineLaserBeam2 : WilyMachineLaserBeam1
{
states
{
Spawn2:
TDW2 J 1 A_SpawnItemEx("WilyMachineLaserBeam2",OFS_2)
stop
}
}

Actor WilyMachineLaserBeam3 : WilyMachineLaserBeam1
{
states
{
Spawn2:
TDW2 K 1 A_SpawnItemEx("WilyMachineLaserBeam3",OFS_2)
stop
}
}

Actor WilyMachineLaserBeam4 : WilyMachineLaserBeam1
{
states
{
Spawn2:
TDW2 L 1 A_SpawnItemEx("WilyMachineLaserBeam4",OFS_2)
stop
}
}

Actor WilyMachineLaserBeam5 : WilyMachineLaserBeam1
{
states
{
Spawn2:
TDW2 M 1 A_SpawnItemEx("WilyMachineLaserBeam5",OFS_2)
stop
}
}

Actor WilyMachineLaserBeam6 : WilyMachineLaserBeam1
{
states
{
Spawn2:
TDW2 N 1 A_SpawnItemEx("WilyMachineLaserBeam6",OFS_2)
stop
}
}

Actor WilyMachineLaserDamager1
{
PROJECTILE
+RIPPER 
+THRUGHOST
+THRUACTORS
Damage(0)
Height 4
Radius 4
damagetype "WilyMachineSynth"
Obituary "$OB_TRUEDRWILY4"
const int DMG = 3;
const int RNG = 5;
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_JumpIfCloser(DST,"Spawn2")
Goto Death
Spawn2:
TNT1 A 0 A_SpawnItemEx("WilyMachineLaserDamager1",OFS_1)
TNT1 A 0 A_Explode(DMG,RNG,0,0,RNG)
stop
Death:
TNT1 A 0
stop
}
}

Actor WilyMachineLaserDamager2 : WilyMachineLaserDamager1
{
const int RNG = 10;
states
{
Spawn2:
TNT1 A 0 A_SpawnItemEx("WilyMachineLaserDamager2",OFS_1)
TNT1 A 0 A_Explode(DMG,RNG,0,0,RNG)
stop
}
}

Actor WilyMachineLaserDamager3 : WilyMachineLaserDamager1
{
const int RNG = 20;
states
{
Spawn2:
TNT1 A 0 A_SpawnItemEx("WilyMachineLaserDamager3",OFS_1)
TNT1 A 0 A_Explode(DMG,RNG,0,0,RNG)
stop
}
}

Actor WilyMachineLaserDamager4 : WilyMachineLaserDamager1
{
const int RNG = 40;
states
{
Spawn2:
TNT1 A 0 A_SpawnItemEx("WilyMachineLaserDamager4",OFS_1)
TNT1 A 0 A_Explode(DMG,RNG,0,0,RNG)
stop
}
}

Actor WilyMachineLaserDamager5 : WilyMachineLaserDamager1
{
const int RNG = 80;
states
{
Spawn2:
TNT1 A 0 A_SpawnItemEx("WilyMachineLaserDamager5",OFS_1)
TNT1 A 0 A_Explode(DMG,RNG,0,0,RNG)
stop
}
}

Actor WilyMachineLaserProtect : PowerProtection
{
	Powerup.Duration 1
	DamageFactor "WilyMachineSynth", 0.0
}

Actor WilyMachineLeftFist
{
Translation "192:192=248:248", "198:198=75:75"
PROJECTILE
-NOINTERACTION
+SKYEXPLODE
+DONTREFLECT
+THRUSPECIES
Species "WilyMachineHands"
damagetype "WilyMachineAlt1"
Obituary "$OB_TRUEDRWILY5"
Damage(0)
Speed 40
radius 24
height 32
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Fist")
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag",140,"Vanish")
TNT1 A 0 A_SpawnItemEx("WilyMachineHandBlocker",0,0,0,momx,momy,momz)
WHND D 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Vanish")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",5,"Waiting")
Goto Spawn+2
Death:
TNT1 A 0 A_CheckFloor("Death.Floor")
TNT1 A 0 A_CheckCeiling("Death.Ceiling")
TNT1 AAAAA 0 A_SpawnItemEx("WilyMachineRubble",0,0,0,Random(5,10),0,Random(4,8),Random(0,359))
Goto Death2
Death.Floor:
TNT1 AAAAA 0 A_SpawnItemEx("WilyMachineRubble",40,0,8,0,0,Random(4,12),Random(0,359))
Goto Death2
Death.Ceiling:
TNT1 AAAAA 0 A_SpawnItemEx("WilyMachineRubble",40,0,0,0,0,Random(-5,0),Random(0,359))
Goto Death2
XDeath:
TNT1 A 0 A_PlaySoundEx("assist/hoohoorock","Body")
Death2:
TNT1 A 0 A_PlaySoundEx("misc/quake","Body")
TNT1 A 0 A_Quake(2,10,0,300)
TNT1 A 0 A_ChangeFlag("NOINTERACTION",True)
Waiting:
TNT1 A 0 A_Explode(40,48,0,0,48)
TNT1 A 0 A_PlaySoundEx("weapon/wallrush","Weapon")
WHND E 1 A_Stop
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Flick")
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag",140,"Vanish")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Vanish")
TNT1 A 0 A_SpawnItemEx("WilyMachineHandBlocker")
TNT1 A 0 A_GiveInventory("VCOnceMore",1)
TNT1 A 0 A_JumpIfInventory("VCOnceMore",15,"WaitingEnd")
Goto Waiting+2
WaitingEnd:
TNT1 A 0 A_SpawnItemEx("ReturningWilyMachineLeftHand")
stop
End:
NAPA FGHIJKLMNOPQRS 1
stop
Death.Fist:
TNT1 A 0 A_SpawnItemEx("DeadLeftFist")
stop
Death.Flick:
TNT1 A 0 A_SpawnItemEx("DeadFlick")
stop
Vanish:
TNT1 A 0
stop
}
}

Actor ReturningWilyMachineLeftHand : WilyMachineRightFist
{
+NOINTERACTION
+NOCLIP
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Hand")
TNT1 A 0 A_FaceTarget TNT1 A 0 A_JumpIfCloser(64,"Return")
TNT1 A 0 A_SpawnItemEx("WilyMachineHandBlocker",0,0,0,momx,momy,momz)
WHND H 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Vanish")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death.Hand")
TNT1 A 0 A_FaceTarget TNT1 A 0 A_JumpIfCloser(64,"Return")
TNT1 A 0 A_SpawnItemEx("WilyMachineHandBlocker",0,0,0,momx,momy,momz)
WHND H 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Vanish")
TNT1 A 0 A_CustomMissile("ReturningWilyMachineLeftHand",0,0)
stop
Return:
TNT1 A 0 A_TakeFromTarget("DWLeftFistFlag",1)
TNT1 A 0 A_PlaySoundEx("weapon/adapterreturn","Voice")
stop
Death.Hand:
TNT1 A 0 A_SpawnItemEx("DeadLeftHand",0,0,0,0,0,0,180)
stop
}
}

Actor WilyMachineFlickProtect : PowerProtection
{
	Powerup.Duration -1
	DamageFactor "WilyMachineAlt1", 0.0
}

Actor WilyMachineXShot1
{
PROJECTILE
+SEEKERMISSILE
+LOOKALLAROUND
+THRUSPECIES
+HEXENBOUNCE
species "WilyMachineHands"
damagetype "WilyMachineAlt2"
Obituary "$OB_TRUEDRWILY6"
Damage(22)
Speed 24
Height 24
Radius 16
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 3
TDWP TUV 2
TNT1 A 0 A_ChangeFlag("HEXENBOUNCE",False)
TNT1 A 1 A_Jump(256,"Spawn2")
Goto Spawn2
Spawn2:
TDWP WXYWXY 2 A_Stop
TNT1 A 1 A_Jump(256,"Spawn3")
Goto Spawn3
Spawn3:
TNT1 A 0 A_PlaySoundEx("misc/rathorspirit","SoundSlot5")
TNT1 A 0 A_ChangeVelocity(30,0,0,CVF_RELATIVE)
TNT1 AAAAAAA 0 A_SeekerMissile (90,90,SMF_LOOK|SMF_PRECISE,256,10)
TNT1 A 0 A_JumpIfInventory("CutterFlag",2,"Spawn4")
TDWP WXYWXYWXYWXYWXY 2
TDWP WXYWXYWXYWXYWXY 2 A_Stop
TNT1 A 0 A_GiveInventory("CutterFlag",1)
loop
Spawn4:
TDWP WXY 2
loop
}
}

Actor WilyMachineXShot2 : WilyMachineXShot1
{
States
{
Spawn2:
TDWP WXYWXYWXYWXY 2 A_Stop
TNT1 A 1 A_Jump(256,"Spawn3")
Goto Spawn3
}
}

Actor WilyMachineXShot3 : WilyMachineXShot1
{
States
{
Spawn2:
TDWP WXYWXYWXYWXYWXYWXY 2 A_Stop
TNT1 A 1 A_Jump(256,"Spawn3")
Goto Spawn3
}
}


Actor WilyMachineXShot4 : WilyMachineXShot1
{
States
{
Spawn2:
TDWP WXYWXYWXYWXYWXYWXYWXYWXY 2 A_Stop
TNT1 A 1 A_Jump(256,"Spawn3")
Goto Spawn3
}
}

Actor WilyMachineXShot5 : WilyMachineXShot1
{
States
{
Spawn2:
TDWP WXYWXYWXYWXYWXYWXYWXYWXYWXYWXY 2 A_Stop
TNT1 A 1 A_Jump(256,"Spawn3")
Goto Spawn3
}
}

Actor RockOnTargeter : FastProjectile
{
PROJECTILE
+NOINTERACTION
-NOTARGETSWITCH
+HITTRACER
+SCREENSEEKER
+LOOKALLAROUND
+SEEKERMISSILE
+THRUSPECIES
+DONTREFLECT
species "WilyMachineHands"
height 2
radius 2
damage (0)
speed 100
scale 2.5
const int OFS = 156;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SeekerMissile(90, 90, SMF_LOOK|SMF_CURSPEED, 256)
Goto Death
Crash:
Death:
XDeath:
TNT1 AA 1 A_Warp(AAPTR_TRACER,0,0,0,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TDWP OOPPQQ 1 A_Warp(AAPTR_TRACER,0,0,0,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
DeathLoop:
TNT1 A 0 A_PlaySoundEx("misc/kingalarm","Weapon")
TDWP RRSSRRSSRRSSRRSSRRSS 1 A_Warp(AAPTR_TRACER,0,0,0,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",2,"Detonate")
loop
Detonate:
TNT1 A 0 A_StopSoundEx("Weapon")
TNT1 A 0 A_PlaySoundEx("weapons/mm4/drillbombexplode","SoundSlot5")
TNT1 A 0 A_ChangeFlag("NOINTERACTION",True)
TNT1 A 0 A_Quake(4,35,0,600)
TNT1 A 0 A_SpawnItemEx("RockOnExplosion",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
TNT1 AAAAAAAAAA 0 A_spawnItemEx("RockOnExplosion2",Random(-OFS,OFS),Random(-OFS,OFS),Random(-OFS,OFS),0,0,0,0,SXF_TRANSFERPOINTERS)
TNT1 A 35 A_Stop
stop
}
}

Actor RockOnExplosion
{
PROJECTILE
+NOCLIP
+NOINTERACTION
species "WilyMachineHands"
damagetype "WilyMachineAlt3"
Obituary "$OB_TRUEDRWILY7"
Damage(0)
Height 1
Radius 1
Speed 0
scale 0.1
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
TNT1 A 0 A_Explode(35,500,0,250)
RFLW BBBBBBBBBB 1 A_SetScale(scalex+0.2,scaley+0.2)
stop
}
}

Actor RockOnExplosion2 : RockOnExplosion
{
scale 2.5
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
TNT1 A 0 A_Explode(5,64,0,0,24)
RDUS ABCDEFJKLMNO 1
stop
}
}


Actor ShortRocketStart
{
PROJECTILE
+THRUACTORS
+SKYEXPLODE
+THRUSPECIES
+DONTREFLECT
Species "WilyMachineHands"
Speed 150
Radius 8
Height 8
Scale 2.5
const int SPD = 25;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 1
wait
Death:
TNT1 A 0 A_Stop
TNT1 A 0 A_CheckFloor("Death.Floor")
TNT1 A 0 A_CheckCeiling("Death.Ceiling")
TNT1 A 0 A_SpawnItemEx("ShortWilyRocketSpawner",-32,0,0,0,0,50)
stop
Death.Floor:
TNT1 A 0 A_SpawnItemEx("ShortWilyRocketSpawner",0,0, 32,0,0,50)
stop
Death.Ceiling:
TNT1 A 0 A_SpawnItemEx("ShortWilyRocket",0,0,-32,0,0,-SPD)
stop
}
}

Actor LongRocketStart : ShortRocketStart
{
States
{
Death:
TNT1 A 0 A_Stop
TNT1 A 0 A_CheckFloor("Death.Floor")
TNT1 A 0 A_CheckCeiling("Death.Ceiling")
TNT1 A 0 A_SpawnItemEx("LongWilyRocketSpawner",-32,0,0,0,0,50)
stop
Death.Floor:
TNT1 A 0 A_SpawnItemEx("LongWilyRocketSpawner",0,0, 32,0,0,50)
stop
Death.Ceiling:
TNT1 A 0 A_SpawnItemEx("LongWilyRocket",0,0,-32,0,0,-SPD)
stop
}
}

Actor ShortWilyRocketSpawner : ShortRocketStart
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 3
TNT1 A 0 A_Stop
TNT1 A 0 A_SpawnItemEx("ShortWilyRocket",0,0,0,0,0,-SPD)
stop
Death:
TNT1 A 0 A_SpawnItemEx("ShortWilyRocket",0,0,-32,0,0,-SPD)
TNT1 AAAAAAAAA 0 A_SpawnItemEx("WilyMachineRubble",40,0,0,0,0,Random(-5,0),Random(0,359))
TNT1 A 10 A_Quake(3,10,0,300)
stop
}
}

Actor LongWilyRocketSpawner : ShortRocketStart
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 3
TNT1 A 0 A_Stop
TNT1 A 0 A_SpawnItemEx("LongWilyRocket",0,0,0,0,0,-SPD)
stop
Death:
TNT1 A 0 A_SpawnItemEx("LongWilyRocket",0,0,-32,0,0,-SPD)
TNT1 AAAAAAAAA 0 A_SpawnItemEx("WilyMachineRubble",40,0,0,0,0,Random(-5,0),Random(0,359))
TNT1 A 10 A_Quake(3,10,0,300)
stop
}
}

Actor ShortWilyRocket
{
PROJECTILE
+THRUACTORS
+THRUSPECIES
+DONTREFLECT
Species "WilyMachineHands"
damagetype "WilyMachineMain2"
Obituary "$OB_TRUEDRWILY8"
Radius 8
Height 8
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TDWP CD 1
Goto Spawn+2
Death:
TNT1 A 0 A_PlaySoundEx("weapon/WilyPressCrush","Body")
TNT1 A 0 A_SpawnItemEx("RocketExplosionMaker")
TNT1 A 0 A_SpawnItemEx("RocketExplosionMaker2")
TDW3 ABCD 1
TNT1 A 0 A_SpawnItemEx("RocketExplosionMaker2")
TDW3 EFGH 1
TNT1 A 0 A_SpawnItemEx("RocketExplosionMaker2")
TDW3 IJKL 1
stop
}
}

Actor LongWilyRocket : ShortWilyRocket
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TDWP GH 1
Goto Spawn+2
Death:
TNT1 A 0 A_PlaySoundEx("weapon/WilyPressCrush","Body")
TNT1 A 0 A_SpawnItemEx("RocketExplosionMaker")
TNT1 A 0 A_SpawnItemEx("RocketExplosionMaker2")
TDW4 ABCD 1
TNT1 A 0 A_SpawnItemEx("RocketExplosionMaker2")
TDW4 EFGH 1
TNT1 A 0 A_SpawnItemEx("RocketExplosionMaker2")
TDW4 IJKL 1
TNT1 A 0 A_SpawnItemEx("RocketExplosionMaker2")
TDW4 MNOP 1
stop
}
}

Actor RocketExplosionMaker
{
PROJECTILE
+NOCLIP
+FLOORHUGGER
+NOINTERACTION
+DONTREFLECT
Height 1
Radius 1
var int User_Offset;
var int User_Turn;
var int User_Degrees;
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetUserVar("User_Offset",64)
TNT1 A 0 A_SetUserVar("User_Turn",0)
TNT1 A 0 A_SetUserVar("User_Degrees",0)
Spawn2:
TNT1 A 0 A_SpawnItemEx("RocketExplosion",User_Offset,0,0,0,0,0,User_Degrees+User_Turn,SXF_TRANSFERPOINTERS)
TNT1 A 0 A_SetUserVar(User_Degrees,User_Degrees+18)
TNT1 A 0 A_JumpIf(user_degrees>=360,"Reset")
TNT1 A 1 A_JumpIf(true,"Spawn2")
wait
Reset:
TNT1 A 4 A_Quake(4,5,0,800)
TNT1 A 0 A_SetUserVar("User_Turn",User_Turn+45)
TNT1 A 0 A_SetUserVar("User_Offset",User_Offset+64)
TNT1 A 0 A_SetUserVar("User_Degrees",0)
TNT1 A 0 A_JumpIf(User_Offset>=320,"End")
Goto Spawn2
End:
TNT1 A 0
stop
}
}

Actor RocketExplosionMaker2 : RocketExplosionMaker
{
States
{
Spawn:
TNT1 A 0 A_SetUserVar("User_Offset",0)
Spawn2:
TNT1 AA 0 A_SpawnItemEx("RocketExplosion",32*Random(-5,5),32*Random(-5,5),32*Random(0,5),0,0,0,0,SXF_TRANSFERPOINTERS)
TNT1 A 4 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",10,1)
loop
TNT1 A 0
stop
}
}

Actor RocketExplosion
{
PROJECTILE
+DONTREFLECT
damagetype "WilyMachineTF"
Obituary "$OB_TRUEDRWILY8"
Damage(0)
Height 1
Radius 1
Speed 0
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
TNT1 A 0 A_Explode(16,200,0,100)
NAPA EFGHIJKLMNOPQRS 1
stop
}
}

Actor WilyRocketProtect : PowerProtection
{
	Powerup.Duration 3
	DamageFactor "WilyMachineTF", 0.0
}

Actor WilyMachineCapsuleWarper1
{
+NOGRAVITY
+NOINTERACTION
+THRUSPECIES
+DONTREFLECT
Species "WilyMachineHands"
height 8
radius 8
scale 2.5
const int OFS = 320;
States
{
Spawn:
TNT1 AA 0
TNT1 AA 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24)
TNT1 A 0 A_PlaySoundEx("misc/astroplatformappear","Auto")
TDRW OOOOO 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24)
Spawn2:
TDRW P 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW P 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW P 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW P 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW P 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW Q 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW Q 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW Q 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW Q 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW Q 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW P 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW P 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW P 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW P 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW P 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW R 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW R 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW R 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW R 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW R 1 A_Warp(AAPTR_TARGET,0,OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
loop
Exit:
TDRW OOOOO 1 A_Warp(AAPTR_NULL,0,OFS,0,0,24)
stop
}
}

Actor WilyMachineCapsuleWarper2 : WilyMachineCapsuleWarper1
{
States
{
Spawn:
TNT1 AA 0
TNT1 AA 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24)
TNT1 A 0 A_PlaySoundEx("misc/astroplatformappear","Auto")
TDRW OOOOO 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24)
Spawn2:
TDRW P 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW P 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW P 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW P 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW P 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW Q 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW Q 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW Q 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW Q 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW Q 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW P 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW P 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW P 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW P 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW P 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW R 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW R 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW R 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW R 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
TDRW R 1 A_Warp(AAPTR_TARGET,0,-OFS,0,0,24) TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Exit")
loop
Exit:
TDRW OOOOO 1 A_Warp(AAPTR_NULL,0,-OFS,0,0,24)
stop
}
}

Actor WilyMachineAlienWarper
{
Translation "92:192=106:106", "198:198=[0,148,0]:[0,148,0]"
+MISSILE
+NOGRAVITY
+THRUACTORS
+LOOKALLAROUND
+SEEKERMISSILE
+NOINTERACTION
+NOTARGETSWITCH
+THRUSPECIES
+DONTREFLECT
Species "WilyMachineHands"
height 8
radius 8
scale 2.5
var int User_X;
var int User_Z;
var int User_Deg;
const int NUM_1 = 8;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
TNT1 A 0 A_setUserVar("User_X",64)
TNT1 A 0 A_setUserVar("User_Z",160)
TNT1 A 0 A_setUserVar("User_Deg",0)
TNT1 AA 1 A_Warp(AAPTR_TARGET,User_X,0,User_Z,User_Deg,24)
TNT1 A 0 A_PlaySoundEx("misc/astroplatformappear","Auto")
Spawn2:
ALIE A 1 A_Warp(AAPTR_TARGET,User_X,0,User_Z,User_Deg,24) TNT1 A 0 A_setUserVar("User_Deg",User_Deg-NUM_1) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 1 A_Warp(AAPTR_TARGET,User_X,0,User_Z,User_Deg,24) TNT1 A 0 A_setUserVar("User_Deg",User_Deg-NUM_1) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Spawn2")
Looking:
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("TerminationUltimateAmmo",1,1)
Goto Vanish
TNT1 A 0 A_GiveToTarget("WilyMachineUltBuildCooldownGiver",1)
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE)
ALIE A 1 A_Warp(AAPTR_TARGET,User_X,0,User_Z,User_Deg,24) TNT1 A 0 A_setUserVar("User_Deg",User_Deg-NUM_1)
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE)
ALIE A 1 A_Warp(AAPTR_TARGET,User_X,0,User_Z,User_Deg,24) TNT1 A 0 A_setUserVar("User_Deg",User_Deg-NUM_1)
loop
Missile:
TNT1 A 0 A_FaceTracer(0,0)
TNT1 A 0 A_PlaySoundEx("weapon/alienshot","Auto")
TNT1 A 0 A_GiveToTarget("WilyMachineUltBuildCooldownGiver",1)
TNT1 A 0 A_CustomMissile("WilyMachineAlienShot",32,0,0,CMF_AIMDIRECTION,pitch)
TNT1 A 0 A_FaceTracer(0,0) ALIE F 1 A_Warp(AAPTR_TARGET,User_X,0,User_Z,User_Deg,24) TNT1 A 0 A_setUserVar("User_Deg",User_Deg-NUM_1) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_FaceTracer(0,0) ALIE F 1 A_Warp(AAPTR_TARGET,User_X,0,User_Z,User_Deg,24) TNT1 A 0 A_setUserVar("User_Deg",User_Deg-NUM_1) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_FaceTracer(0,0) ALIE F 1 A_Warp(AAPTR_TARGET,User_X,0,User_Z,User_Deg,24) TNT1 A 0 A_setUserVar("User_Deg",User_Deg-NUM_1) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_FaceTracer(0,0) ALIE F 1 A_Warp(AAPTR_TARGET,User_X,0,User_Z,User_Deg,24) TNT1 A 0 A_setUserVar("User_Deg",User_Deg-NUM_1) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_FaceTracer(0,0) ALIE F 1 A_Warp(AAPTR_TARGET,User_X,0,User_Z,User_Deg,24) TNT1 A 0 A_setUserVar("User_Deg",User_Deg-NUM_1) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_FaceTracer(0,0) ALIE G 1 A_Warp(AAPTR_TARGET,User_X,0,User_Z,User_Deg,24) TNT1 A 0 A_setUserVar("User_Deg",User_Deg-NUM_1) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_FaceTracer(0,0) ALIE G 1 A_Warp(AAPTR_TARGET,User_X,0,User_Z,User_Deg,24) TNT1 A 0 A_setUserVar("User_Deg",User_Deg-NUM_1) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_FaceTracer(0,0) ALIE G 1 A_Warp(AAPTR_TARGET,User_X,0,User_Z,User_Deg,24) TNT1 A 0 A_setUserVar("User_Deg",User_Deg-NUM_1) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_FaceTracer(0,0) ALIE G 1 A_Warp(AAPTR_TARGET,User_X,0,User_Z,User_Deg,24) TNT1 A 0 A_setUserVar("User_Deg",User_Deg-NUM_1) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_FaceTracer(0,0) ALIE G 1 A_Warp(AAPTR_TARGET,User_X,0,User_Z,User_Deg,24) TNT1 A 0 A_setUserVar("User_Deg",User_Deg-NUM_1) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",3,1)
Goto Missile+3
TNT1 A 0 A_TakeInventory("CutterFlag",9)
TNT1 A 0 A_RearrangePointers(AAPTR_DEFAULT,AAPTR_DEFAULT,AAPTR_NULL)
Goto Looking
Vanish:
TNT1 A 0 A_PlaySoundEx("weapon/aliendisappear","Body")
TNT1 A 0 A_GiveToTarget("WilyMachineUltBuildCooldownGiver",1)
ALIE A 1 A_Warp(AAPTR_TARGET,User_X,0,User_Z,User_Deg,24) TNT1 A 0 A_setUserVar("User_Deg",User_Deg-NUM_1)
TNT1 A 1 A_Warp(AAPTR_TARGET,User_X,0,User_Z,User_Deg,24) TNT1 A 0 A_setUserVar("User_Deg",User_Deg-NUM_1)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",20,"Vanished")
loop
Vanished:
TNT1 A 1
stop
Death:
TNT1 A 0 A_SpawnItemEx("HologramDevice",0,0,40,0,0,1)
TNT1 A 0 A_SpawnItemEx("DeadAlien",0,0,0,0,0,2,0,SXF_TRANSFERTRANSLATION)
stop
}
}

Actor WilyMachineAlienShot
{
PROJECTILE
+THRUSPECIES
Obituary "$OB_TRUEDRWILY9"
damagetype "WilyMachineUlt1"
Species "WilyMachineHands"
Damage(50)
Speed 70
Height 32
Radius 16
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
6ULT X 1
wait
}
}


Actor WilyCapsuleXStart
{
PROJECTILE
+THRUACTORS
+SKYEXPLODE
+THRUSPECIES
+HEXENBOUNCE
+DONTREFLECT
Species "WilyMachineHands"
height 32
radius 16
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 AAAAAAAAA 1 A_GiveToTarget("WilyMachineUltBuildCooldownGiver",1)
Goto Death
Death:
TNT1 A 0 A_Stop
TNT1 A 0 A_SpawnItemEx("WilyCapsuleX",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
stop
}
}

Actor WilyCapsuleX
{
+MISSILE
+NOGRAVITY
+LOOKALLAROUND
+SEEKERMISSILE
+NOINTERACTION
+NOTARGETSWITCH
+THRUSPECIES
+DONTREFLECT
Species "WilyMachineHands"
height 32
radius 16
scale 2.5
var int User_X;
var int User_Z;
var int User_Deg;
const int NUM_1 = 8;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
TNT1 A 0 A_PlaySoundEx("misc/astroplatformappear","Auto")
TDRW OOOOO 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
Looking:
TNT1 A 0 A_GiveToTarget("WilyMachineUltBuildCooldownGiver",1)
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE) TDRW P 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE) TDRW P 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE) TDRW P 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE) TDRW P 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE) TDRW P 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE) TDRW Q 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE) TDRW Q 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE) TDRW Q 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE) TDRW Q 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE) TDRW Q 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE) TDRW P 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE) TDRW P 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE) TDRW P 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE) TDRW P 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE) TDRW P 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE) TDRW R 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE) TDRW R 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE) TDRW R 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE) TDRW R 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,256) TNT1 A 0 A_JumpIfTargetInLOS("Missile",0,JLOSF_PROJECTILE) TDRW R 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",3,"Exit")
loop
Missile:
TNT1 A 0 A_GiveToTarget("WilyMachineUltBuildCooldownGiver",1)
TNT1 A 0 A_FaceTracer(0,0)
TNT1 A 0 A_PlaySoundEx("misc/wilyball","SoundSlot5")
TNT1 A 0 A_PlaySoundEx("weapon/wily10spherefire","SoundSlot5")
TNT1 A 0 A_CustomMissile("WilyCapsuleXShot",32,0,0,CMF_AIMDIRECTION,pitch)
TDRW P 1 A_FaceTracer(0,0) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TDRW P 1 A_FaceTracer(0,0) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TDRW P 1 A_FaceTracer(0,0) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TDRW P 1 A_FaceTracer(0,0) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TDRW P 1 A_FaceTracer(0,0) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_PlaySoundEx("misc/wilyball","SoundSlot5")
TNT1 A 0 A_PlaySoundEx("weapon/wily10spherefire","SoundSlot5")
TNT1 A 0 A_CustomMissile("WilyCapsuleXShot",32,0,0,CMF_AIMDIRECTION,pitch)
TDRW Q 1 A_FaceTracer(0,0) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TDRW Q 1 A_FaceTracer(0,0) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TDRW Q 1 A_FaceTracer(0,0) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TDRW Q 1 A_FaceTracer(0,0) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TDRW Q 1 A_FaceTracer(0,0) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_PlaySoundEx("misc/wilyball","SoundSlot5")
TNT1 A 0 A_PlaySoundEx("weapon/wily10spherefire","SoundSlot5")
TNT1 A 0 A_CustomMissile("WilyCapsuleXShot",32,0,0,CMF_AIMDIRECTION,pitch)
TDRW P 1 A_FaceTracer(0,0) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TDRW P 1 A_FaceTracer(0,0) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TDRW P 1 A_FaceTracer(0,0) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TDRW P 1 A_FaceTracer(0,0) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TDRW P 1 A_FaceTracer(0,0) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_PlaySoundEx("misc/wilyball","SoundSlot5")
TNT1 A 0 A_PlaySoundEx("weapon/wily10spherefire","SoundSlot5")
TNT1 A 0 A_CustomMissile("WilyCapsuleXShot",32,0,0,CMF_AIMDIRECTION,pitch)
TDRW R 1 A_FaceTracer(0,0) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TDRW R 1 A_FaceTracer(0,0) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TDRW R 1 A_FaceTracer(0,0) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TDRW R 1 A_FaceTracer(0,0) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TDRW R 1 A_FaceTracer(0,0) TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_GiveInventory("VCOnceMore",1)
TNT1 A 0 A_JumpIfInventory("VCOnceMore",2,"Exit")
loop
Exit:
TDRW OOOOO 1
TNT1 AAA 1 A_TakeFromTarget("DWUltCapsuleFlag",1)
stop
Death:
TNT1 A 0 A_SpawnItemEx("DeadWilyCapsuleX")
stop
}
}

Actor WilyCapsuleXShot
{
PROJECTILE
+RIPPER
+THRUSPECIES
Obituary "$OB_TRUEDRWILY10"
damagetype "WilyMachineUlt2"
Species "WilyMachineHands"
Damage(10)
Speed 50
Height 48
Radius 24
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
TNT1 A 1
Spawn2:
TDW2 FFGGHH 1
loop
}
}

Actor WilyCapsuleXShotProtect : PowerProtection
{
	Powerup.Duration 1
	DamageFactor "WilyMachineUlt2", 0.0
}

Actor WilyMachineUltWatcher
{
+MISSILE
-SOLID
+NOGRAVITY
+NOINTERACTION
Height 0
Radius 0
States
{
Spawn: 
TNT1 A 0
Spawn2:
TNT1 A 0 A_JumpIfInTargetInventory("TerminationUltimateAmmo",1,1)
Goto Finish
TNT1 A 0 A_TakeFromTarget("TerminationUltimateAmmo",2) TNT1 A 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_TakeFromTarget("TerminationUltimateAmmo",2) TNT1 A 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
loop
Finish:
TNT1 AA 1 A_TakeFromTarget("DWUltimateActiveFlag",1)
Death:
TNT1 A 0
stop
}
}

Actor WilyMachineUltBuildCooldownGiver : UltBuildCooldownGiver
{
	Powerup.Duration -3
}

Actor DeadWilyMachine
{
+NOGRAVITY
+NOINTERACTION
height 1
radius 1
scale 2.5
const int OFS = 96;
const int DEG = 36;
ReactionTime 10
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_SpawnItemEx("VCWilyUFO",64,0,128)
Spawn2:
TNT1 A 0 A_PlaySoundEx("weapons/mm5/napalmbombexplode","SoundSlot5")
TDRW MN 4 A_SpawnItemEx("DrillExplode",Random(-OFS,OFS),Random(-OFS,OFS),Random(0,OFS))
TNT1 A 0 A_CountDown
loop
Death:
TNT1 A 0 A_PlaySoundEx("weapon/pfdeath","Auto")
TNT1 A 0 A_SpawnItemEx("FakeDeathFXPB",0,0,64,0,0,0,DEG*1)
TNT1 A 0 A_SpawnItemEx("FakeDeathFXPB",0,0,64,0,0,0,DEG*2)
TNT1 A 0 A_SpawnItemEx("FakeDeathFXPB",0,0,64,0,0,0,DEG*3)
TNT1 A 0 A_SpawnItemEx("FakeDeathFXPB",0,0,64,0,0,0,DEG*4)
TNT1 A 0 A_SpawnItemEx("FakeDeathFXPB",0,0,64,0,0,0,DEG*5)
TNT1 A 0 A_SpawnItemEx("FakeDeathFXPB",0,0,64,0,0,0,DEG*6)
TNT1 A 0 A_SpawnItemEx("FakeDeathFXPB",0,0,64,0,0,0,DEG*7)
TNT1 A 0 A_SpawnItemEx("FakeDeathFXPB",0,0,64,0,0,0,DEG*8)
TNT1 A 0 A_SpawnItemEx("FakeDeathFXPB",0,0,64,0,0,0,DEG*9)
TNT1 A 0 A_SpawnItemEx("FakeDeathFXPB",0,0,64,0,0,0,DEG*10)
TNT1 A 35 A_Quake(3,35,0,500)
stop
}
}

Actor DeadRightHand : DeadWilyMachine
{
const int OFS = 32;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
Spawn2:
TNT1 A 0 A_PlaySoundEx("weapons/mm5/napalmbombexplode","SoundSlot5")
WHND MS 4 A_SpawnItemEx("ExplosionEffect1",Random(-OFS,OFS),Random(-OFS,OFS),Random(0,OFS))
TNT1 A 0 A_CountDown
loop
Death:
TNT1 A 0 A_SpawnItemEx("DrillExplode")
stop
}
}

Actor DeadRightFist : DeadRightHand
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
Spawn2:
TNT1 A 0 A_PlaySoundEx("weapons/mm5/napalmbombexplode","SoundSlot5")
WHND OU 4 A_SpawnItemEx("ExplosionEffect1",Random(-OFS,OFS),Random(-OFS,OFS),Random(0,OFS))
TNT1 A 0 A_CountDown
loop
}
}

Actor DeadLeftHand : DeadRightHand
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
Spawn2:
TNT1 A 0 A_PlaySoundEx("weapons/mm5/napalmbombexplode","SoundSlot5")
WHND NT 4 A_SpawnItemEx("ExplosionEffect1",Random(-OFS,OFS),Random(-OFS,OFS),Random(0,OFS))
TNT1 A 0 A_CountDown
loop
}
}

Actor DeadLeftFist : DeadRightHand
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
Spawn2:
TNT1 A 0 A_PlaySoundEx("weapons/mm5/napalmbombexplode","SoundSlot5")
WHND PV 4 A_SpawnItemEx("ExplosionEffect1",Random(-OFS,OFS),Random(-OFS,OFS),Random(0,OFS))
TNT1 A 0 A_CountDown
loop
}
}

Actor DeadFlick : DeadRightHand
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
Spawn2:
TNT1 A 0 A_PlaySoundEx("weapons/mm5/napalmbombexplode","SoundSlot5")
WHND QW 4 A_SpawnItemEx("ExplosionEffect1",Random(-OFS,OFS),Random(-OFS,OFS),Random(0,OFS))
TNT1 A 0 A_CountDown
loop
}
}

Actor DeadFingerGun : DeadRightHand
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
Spawn2:
TNT1 A 0 A_PlaySoundEx("weapons/mm5/napalmbombexplode","SoundSlot5")
WHND RX 4 A_SpawnItemEx("ExplosionEffect1",Random(-OFS,OFS),Random(-OFS,OFS),Random(0,OFS))
TNT1 A 0 A_CountDown
loop
}
}

Actor DeadWilyCapsuleX : DeadWilyMachine
{
const int OFS = 64;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
Spawn2:
TNT1 A 0 A_PlaySoundEx("weapons/mm5/napalmbombexplode","SoundSlot5")
TDRW S 8 A_SpawnItemEx("DrillExplode",Random(-OFS,OFS),Random(-OFS,OFS),Random(0,OFS))
TNT1 A 0 A_CountDown
loop
Death:
TNT1 A 0 A_PlaySoundEx("weapon/mm2death","Auto")
TNT1 A 0 A_SpawnItemEx("FakeDeathFXMM9",0,0,64)
stop
}
}

Actor VCWilyUFO
{
+NOGRAVITY
+NOINTERACTION
height 1
radius 1
scale 2.5
const int X_SPD = 15;
const int Z_SPD = 1;
const int ANG = 8;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_SetAngle(angle+90)
TNT1 A 0 A_PlaySoundEx("misc/ufo","SoundSlot7",1)
Spawn2:
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO D 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO D 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO E 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO E 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO F 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO F 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",10,"Spawn3")
loop
Spawn3:
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO G 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO G 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO G 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO G 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO G 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO G 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",20,"Spawn4")
loop
Spawn4:
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO H 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO H 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO H 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO H 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO H 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO H 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",30,"Spawn5")
loop
Spawn5:
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO I 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO I 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO I 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO I 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO I 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO I 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",40,"Spawn6")
loop
Spawn6:
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO J 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO J 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO J 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO J 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO J 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_CheckCeiling("Death") TNT1 A 0 A_ChangeVelocity(X_SPD,0,Z_SPD,CVF_RELATIVE|CVF_REPLACE) WUFO J 1 A_SetAngle(angle+ANG)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",50,"Death")
loop
Death:
TNT1 A 0 A_SpawnItemEx("VCWilyUFOVanish")
stop
}
}

Actor VCWilyUFOVanish : VCWilyUFO
{
Translation "0:255=4:4"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
MRCR ABCD 1
stop
}
}

Actor DWSummonHandsFlag : VCOnce {}
Actor DWRightChargeFlag : VCOnce {}
Actor DWRightFistFlag : VCOnce {}
Actor DWLaserFlag : VCOnce {}
Actor DWLeftChargeFlag : VCOnce {}
Actor DWLeftFistFlag : VCOnce {}
Actor DWLeftRockOnFlag : VCOnce {}
Actor DWRocketFlag : VCOnce {}
Actor DWUltCapsuleFlag : VCOnce {}
Actor DWHandFlash1Flag : VCOnce {}
Actor DWHandFlash2Flag : VCOnce {}
Actor DWUltimateActiveFlag : VCOnce {}

actor WilyLaserRing : BasicClientSide
{
scale 5.0
translation "110:110=192:192"
States
{
Spawn:
TNT1 A 0
S7NC FEBAK 1
stop
}
}

actor TDWSpawnHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 SetPlayerProperty(0,0,3)
TNT1 A 0 SetPlayerProperty(0,0,4)
TNT1 A 0 SetPlayerProperty(0,0,0)
TNT1 A 0 A_TakeInventory("VC_Timer",999)
stop
}
}

actor TDWSpawnHandler2 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("InvProtection",1)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",0)
TNT1 A 0 A_ChangeFlag("NOTELEFRAG",False)
stop
}
}

actor TrueDrWilyUltimateStart1PickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_Stop
TNT1 A 0 SetPlayerProperty(0,1,3)
TNT1 A 0 SetPlayerProperty(0,1,4)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",True)
TNT1 A 0 A_GiveInventory("InvProtection",1)
TNT1 A 0 A_TakeInventory("UltAttackFlag",1)
TNT1 A 0 A_SpawnItemEx("TerminatorUltimateAlarm")
TNT1 A 0 A_GiveInventory("DWUltimateActiveFlag",1)
TNT1 A 0 A_GiveInventory("PowerUltBuildCooldown",1)
TNT1 A 0 A_SpawnItemEx("WilyMachineCapsuleWarper1")
TNT1 A 0 A_SpawnItemEx("WilyMachineCapsuleWarper2")
TNT1 A 0 A_TakeInventory("TerminationUltimateAmmo",1)
TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,139)
TNT1 A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
stop
}
}

actor TrueDrWilyUltimateStart2PickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 SetPlayerProperty(0,0,3)
TNT1 A 0 SetPlayerProperty(0,0,4)
TNT1 A 0 A_TakeInventory("VCOnce",1)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",False)
TNT1 A 0 A_TakeInventory("InvProtection",1)
TNT1 A 0 A_SpawnItemEx("WilyMachineUltWatcher")
stop
}
}
